"""
异常都是主动抛出的
怎么理解这句话呢？我们分为两点：

python自带的异常
使用标准库/第三方库/自己封装的代码，抛出的异常
先看第一点

我们知道 int('a') 会抛出异常，但这个异常是 python主动抛出的

它检测到这个参数，并不符合转化条件，于是会在转化前抛出异常给代码编写者。

再看第二点

我们这里封装一个函数，来模拟 主动抛出异常的场景
"""
# dataDict = {
#     'name': '木舟',
#     'age': 18
# }
#
# def maybeKeyError(key):
#     if key in dataDict.keys():
#         return dataDict[key]
#     else:
#         raise KeyError(f"你指定的key {key} 并不存在于字典中，请检查")
#
# print("first execute")
# print(maybeKeyError('name'))
#
# print("\nsecond execute")
# print(maybeKeyError('age'))
# #
# print("\nthird execute")
# print(maybeKeyError('sex'))

# 结果
"""
first execute
木舟

second execute
18

third execute
Traceback (most recent call last):
  File "C:\\Users\86131\Desktop\python基础\test\test.py", line 21, in <module>
    print(maybyKeyError('sex'))
  File "C:\\Users\86131\Desktop\python基础\test\test.py", line 11, in maybyKeyError
    raise KeyError(f"你指定的key {key} 并不存在于字典中，请检查")
KeyError: '你指定的key sex 并不存在于字典中，请检查'
"""

# class Cycle():
#     def __init__(self, r):
#         if r > 0:
#             self.r = r
#         else:
#             raise ValueError("该参数不允许小于0")
#
#     def func1(self):
#         return 3.14 * (self.r ** 2)
#
#     def func2(self):
#         return 2 * 3.14 * self.r
#
# c1 = Cycle(5)
# c2 = Cycle(10)
# try:
#     c3 = Cycle(-1)
#     c3.func2()
# except:
#     print("参数错误, 重新确定吧")

# https://walker_kwu.gitee.io/my-blog/2022/07/11/python/advanced/try-except/
